/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package Modelo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author lucia
 */
public class Banco {
    public static List<Funcionario> funcionarios;
    static{ 
        funcionarios = new ArrayList<Funcionario>();
    }
    

     public static void adicionarFuncionario(Funcionario f) {
        funcionarios.add(f);
    }
    
    public static void removerFuncionario(Funcionario f) {
        funcionarios.remove(f);
    }
    
    public static List<Funcionario> getFuncionarios() {
        return funcionarios;
    }
    // FORNECEDOR
    public static List<Fornecedor> fornecedores;
    static{ 
        fornecedores = new ArrayList<Fornecedor>();
    }
     public static void adicionarFornecedor(Fornecedor f) {
        fornecedores.add(f);
    }
    
    public static void removerFornecedor(Fornecedor f) {
        fornecedores.remove(f);
    }
    
    public static List<Fornecedor> getFornecedores() {
        return fornecedores;
    }
    
   //LABORATORIO    
    
    public static List<Laboratorio> laboratorios;
    static{ 
       laboratorios = new ArrayList<Laboratorio>();
    }
     public static void adicionarLaboratorio(Laboratorio l) {
        laboratorios.add(l);
    }
    
    public static void removerLaboratorio(Laboratorio l) {
        laboratorios.remove(l);
    }
    
    public static List<Laboratorio> getlaboratorios() {
        return laboratorios;
    }
    
     //PRODUTO   
    
    public static List<Produto> produtos;
    static{ 
       produtos = new ArrayList<Produto>();
    }
     public static void adicionarProduto(Produto p) {
        produtos.add(p);
    }
    
    public static void removerProduto(Produto p) {
        produtos.remove(p);
    }
    
    public static List<Produto> getProdutos() {
        return produtos;
    }
    //Cliente   
    
    public static List<Cliente> clientes;
    static{ 
        clientes = new ArrayList<Cliente>();
    }
     public static void adicionarCliente(Cliente c) {
        clientes.add(c);
    }
    
    public static void removerCleinte(Cliente c) {
        clientes.remove(c);
    }
    
    public static List<Cliente> getClientes() {
        return clientes;
    }
    //--------------------------------------------------------------------------
    public static void salvar(){
        try {
            File file = new File("D:\\teste.txt");
        
            if( !file.exists() ){
               file.createNewFile();
            }
       
            
            
            OutputStream outStream = new FileOutputStream(file);
            ObjectOutputStream salvador = new ObjectOutputStream(outStream);
            
            salvador.writeObject(funcionarios);
            
            
            
       } catch (IOException ex) {
                Logger.getLogger(Banco.class.getName()).log(Level.SEVERE, null, ex);
       }
    }
   
        public static void recuperar(){
        try {
            File file = new File("D:\\teste.txt");
       
            InputStream outStream = new FileInputStream(file);
            ObjectInputStream salvador = new ObjectInputStream(outStream);
            
            funcionarios = (List<Funcionario>) salvador.readObject();
            
            
       } catch (ClassNotFoundException ex) {
                Logger.getLogger(Banco.class.getName()).log(Level.SEVERE, null, ex);
       }
        catch (IOException ex) {
                Logger.getLogger(Banco.class.getName()).log(Level.SEVERE, null, ex);
       }
    }
    
}


    

